package com.prd.service;

import com.prd.dto.SysUserDTO;
import com.prd.dto.SysUserRoleDTO;
import com.prd.model.SysUserDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.prd.util.JsonData;
import com.prd.vo.LoginUserVo;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 系统用户数据表 服务类
 * </p>
 *
 * @author lizhaoyi
 * @since 2024-01-09
 */
public interface SysUserService extends IService<SysUserDO> {

    /**
     * 获取用户列表
     * @param sysUserDTO
     * @return
     */
    List<SysUserDTO> selectUserList(SysUserDTO sysUserDTO);

    /**
     * 获取当前用户信息
     * @return
     */
    JsonData getCurrentUserInfo();

    /**
     * 同步用户信息
     * @return
     */
    JsonData syncUserInfo();

    /**
     * 根据用户编号获取详细信息
     * @param userId
     * @return
     */
    JsonData getUserInfoById(Long userId);

    /**
     *
     * 根据用户编号获取授权角色
     * @param userId
     * @return
     */
    JsonData getRolesByUserId(Long userId);

    /**
     * 根据条件分页查询已分配用户角色列表
     * @param userDTO
     * @return
     */
    List<SysUserDTO> selectAllocatedList(SysUserDTO userDTO);

    /**
     * 查询未分配用户角色列表
     * @param userDTO
     * @return
     */
    List<SysUserDTO> selectUnallocatedList(SysUserDTO userDTO);


    /**
     * 用户授权角色
     * @param userId
     * @param roleIds
     * @return
     */
    JsonData insertUserAuth(Long userId, Long[] roleIds);

    /**
     * 用户登录
     * @param response
     * @param loginUserVo
     * @return
     */
    JsonData login(HttpServletResponse response,LoginUserVo loginUserVo);
}
